const mongoose = require('mongoose');
const express = require('express');
const app = express();
const cors = require('cors');
const cookieParser = require('cookie-parser');
const indexRouter = require('./routers');

// 静态文件配置（开发环境）
app.use(express.static('public')); // 公共资源（如 favicon.ico）
app.use(express.static('src'));    // 前端代码（开发环境直接访问）

// 中间件
app.use(cors({
  origin: 'http://localhost:5173',
  methods: ['GET', 'POST', 'PUT', 'DELETE']
}));
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(cookieParser());

// 路由
app.use('/', indexRouter);

// 处理前端路由（如 /admin/category）
app.use((req, res, next) => {
  const path = req.originalUrl;
  if (!path.startsWith('/api') && !path.startsWith('/public')) {
    res.sendFile(__dirname + '/src/index.html');
  } else {
    next();
  }
});

// 错误处理
app.use((err, req, res, next) => {
  console.error('服务器错误:', err.stack);
  res.status(500).json({
    status: 500,
    message: '服务器内部错误，请稍后重试'
  });
});

// 连接数据库并启动服务器
mongoose.connect('mongodb://localhost/server_db2', { useNewUrlParser: true })
  .then(() => {
    console.log('连接数据库成功!!!');
    app.listen(5000, () => {
      console.log('服务器启动成功，请访问: http://localhost:5000');
    });
  })
  .catch(error => {
    console.error('连接数据库失败:', error);
  });